One issue that arises in an associative cache memory is collisions, otherwise known as “hot sets.” Associative caches have many sets, and multiple ways per set. A principle of an associative cache is that any given block of system memory addresses (and the associated block of data), if cached, is held in a particular set given according to a function of certain address bits, and may be held in any way of that set. This arrangement allows a realistic look-up mechanism, where a search for an address in the cache may be done by simply checking tags for all ways of the particular set derived from address bits of that address. However, an associative cache set can only hold as many addresses as it has ways. For example, if it is desired to cache five addresses that all map to the same set in an associative cache that has only four ways in each set, this desire cannot be met by the cache, generally resulting in the eviction of one of the ways.